[レポート] Build an end-to-end DevSecOps pipeline on AWS #GRC351-R #AWSreInforce
こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。
アナハイムで開催されている AWS re:Inforce 2023 に参加しています。
本記事は AWS re:Inforce 2023 のセッション「Build an end-to-end DevSecOps pipeline on AWS」のセッションレポートです。
セッション概要
Organizations want to deliver applications that meet a high bar for security and governance considerations. In this builders’ session, build a DevSecOps CI/CD pipeline with security and compliance testing integrated into the development process. Find out how you can create a CI/CD pipeline that delivers tested and secure infrastructure as code using a git branching strategy for your AWS accounts. Using Amazon CodeCatalyst, integrate CFN-Guard to run policy validations and ensure pipeline deployments are consistent and meet your organization’s compliance standards.
構成図
構成図は以下の通りです。
テキストの構成図を引用
仕組みとしては以下のとおりです。
- cfn-guard と 監査リソースのプロジェクトで、2つ存在している
- どちらも Git で管理されており、コミットをトリガーに CI/CD ワークフローが実行される
- Lambda に関しては、 cfn-guard で定義されたルールに準拠しているかデプロイ前にチェックされる
- cfn-guard のルールに準拠していれば、 Lambda 関数がデプロイされる
やってみた
再現はできないのですが、どんな手順でやったかの参考になれば幸いです。
では、さっそくやってみましょう!
cfn-guard プロジェクトの作成
CodeCatalyst プロジェクトとは、開発チーム単位ごとに作成する共同の作業場所を指します。cfn-guard ルール を保管する CodeCatalyst プロジェクト (レジストリ) を作成します。
リポジトリの作成
cfn-guard ルールを Git 管理するため、先ほど作成したプロジェクト内で、リポジトリを作成していきます。
作ってて気がついたのですが、 Description が日本語対応していました。
リポジトリのブーストラップ
作成したリポジトリにソースコードをコミットします。
rules には、 Python のランタイムチェックと、タグ付けがされているかのチェックが配置されています。
Environment の作成
Environment はコードのデプロイ操作をコントロールを行う機能です。 Platform-Engineering の名前と、デプロイ先の AWS アカウントを紐づけて作成しました。
Workflow の作成
Workflow で Guard のルールを構築, テストし S3 バケットに配信します。
監査リソースのプロジェクトの作成
cfn-guard でチェックされるリソース (プロジェクト) を作成します。
今回は Serverless application model (SAM) API のブループリントからプロジェクトの作成をしました。
ブループリント用意されているの大変便利ですね。
ワークフローの編集
cfn-guard を Lambda デプロイ前にチェックするため、Lambda プロジェクトのワークフローを編集しました。
ビルドと並行して実施されてるような仕組みに変更しました。
リソースの修正
Lambda のランタイムチェックにはクリアしていましたが、タグ付けができていなかったため、パイプラインがコケていました。
テストにクリアするために Lambda のタグ付けを変更します。
コミットすると ワークフローが自動実行され、数分後テストに合格していました!
まとめ
以上、Build an end-to-end DevSecOps pipeline on AWS のセッションレポートでした。
ワークフロー、Environment など CodeCatalyst 特有の要素を利用して、 DevSecOps パイプラインを実装するのが初めてだったため、とても勉強になりました。
この記事がどなたかの参考になれば幸いです。
以上、 AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!